package com.git.hui.yinshua.biz.common.oss;

import com.git.hui.yinshua.biz.rest.models.img.ImgTokenDto;
import com.github.hui.quick.plugin.base.constants.MediaType;
import com.github.hui.quick.plugin.base.file.FileReadUtil;
import org.apache.commons.lang3.StringUtils;

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import static com.git.hui.yinshua.api.model.constants.GlobalConstants.ImgApi.DEFAULT_FILE_TYPE;
import static com.git.hui.yinshua.api.model.constants.GlobalConstants.ImgApi.STATIC_IMG_TYPE;

/**
 * @author YiHui
 * @date 2023/1/12
 */
public interface ImageUploader {
    /**
     * 文件上传
     *
     * @param input
     * @param fileType
     * @return
     */
    String upload(InputStream input, String fileType);

    /**
     * 判断外网图片是否依然需要处理
     *
     * @param fileUrl
     * @return true 表示忽略，不需要转存
     */
    boolean uploadIgnore(String fileUrl);

    default ImgTokenDto getUploadToken() {
        return null;
    }

    default String buildAccessSign(String url) {
        return url;
    }

    /**
     * 获取文件类型
     *
     * @param input
     * @param fileType
     * @return
     */
    default String getFileType(ByteArrayInputStream input, String fileType) {
        if (StringUtils.isNotBlank(fileType)) {
            return fileType;
        }

        MediaType type = MediaType.typeOfMagicNum(FileReadUtil.getMagicNum(input));
        if (STATIC_IMG_TYPE.contains(type)) {
            return type.getExt();
        }
        return DEFAULT_FILE_TYPE;
    }
}
